package com.gxc.pointer;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringJoiner;

/**
 * 服务之间交换的接口成功率作为服务调用关键质量特性，某个时间段内的接口失败率使用一个数组表示，
 *
 * 数组中每个元素都是单位时间内失败率数值，数组中的数值为0~100的整数，
 *
 * 给定一个数值(minAverageLost)表示某个时间段内平均失败率容忍值，即平均失败率小于等于minAverageLost，
 *
 * 找出数组中最长时间段，如果未找到则直接返回NULL。
 *
 * 输入描述
 * 输入有两行内容，第一行为{minAverageLost}，第二行为{数组}，数组元素通过空格(” “)分隔，
 *
 * minAverageLost及数组中元素取值范围为0~100的整数，数组元素的个数不会超过100个。
 *
 * 输出描述
 * 找出平均值小于等于minAverageLost的最长时间段，输出数组下标对，格式{beginIndex}-{endIndx}(下标从0开始)，
 *
 * 如果同时存在多个最长时间段，则输出多个下标对且下标对之间使用空格(” “)拼接，多个下标对按下标从小到大排序。
 *
 * 解法：
 * 双指针
 */
public class MinAverageLost {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String numString = scanner.nextLine();
        String lostString = scanner.nextLine();

        int minAverage = Integer.parseInt(numString);
        Integer[] numArr = Arrays.stream(lostString.split(" ")).map(Integer::parseInt).toArray(Integer[]::new);
        int l = numArr.length;

        int[] cumulativeSum = new int[l];
        cumulativeSum[0] = numArr[0];
        for (int i = 1; i < cumulativeSum.length; i++) {
            cumulativeSum[i] = cumulativeSum[i-1] + numArr[i];
        }
        // 存储满足条件的时间段的开始和结束索引
        ArrayList<Integer[]> validPeriods = new ArrayList<>();
        int max = 0;
        for (int start = 0; start < l; start++) {
            for (int end = start; end < l; end++) {
                int sum = start==0 ? cumulativeSum[end]:cumulativeSum[end]-cumulativeSum[start-1];
                int length = end - start + 1;
                int totalLess = minAverage * length;
                if (sum<=totalLess) {
                    if (length>max) {
                        validPeriods = new ArrayList<>();
                        max = length;
                        validPeriods.add(new Integer[]{start, end});
                    } else if (length == max) {
                        validPeriods.add(new Integer[]{start, end});
                    }
                }
            }
        }
        if (validPeriods.isEmpty()) {
            System.out.println("NULL");
        } else {
            validPeriods.sort((a, b) -> a[0]-b[0]);
            StringJoiner sj = new StringJoiner(" ");
            for (Integer[] validPeriod : validPeriods) {
                sj.add(validPeriod[0] + "-" + validPeriod[1]);
            }
            System.out.println(sj);
        }
    }
}